package br.urca.controller;

import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;

import javax.inject.Inject;

import org.apache.commons.mail.EmailException;

import br.com.caelum.vraptor.Controller;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Result;
import br.urca.interceptor.InterceptResource;
import br.urca.session.UsuarioLogado;
import br.urca.util.AOEmail;

@InterceptResource
@Controller
public class OuvidoriaController {
	
	private Result result;
	private UsuarioLogado mUsuarioLogado;
	
	@Deprecated public OuvidoriaController() { }

	@Inject
	public OuvidoriaController(Result result, UsuarioLogado mUsuarioLogado) {
		super();
		this.result = result;
		this.mUsuarioLogado = mUsuarioLogado;
	}

	@Path("/ouvidoria")
	public void index() {
		
	}
	
	@Path("/ouvidoria.sendmessage")
	public void enviarMensagem(String message, String email) {
	
		if (message != null) {
			if (email != null) {
				if (!AOEmail.validarEmail(email)) {
					result.include("msgerro","E-mail inválido...")
					.include("email",email)
					.include("mensagem", message)
					.redirectTo(this).index();
				} else {
					enviarEmail((email != null ? email : "NÃO INFORMADO"), message);
				}
			} else {
				enviarEmail((email != null ? email : "NÃO INFORMADO"), message);
			}	
		} else {
			result.include("msgerro","A mensagem não pode estar em branco!")
				.include("email",email)
				.include("mensagem", message)
				.redirectTo(this).index();
		}
		
	}
	
	private void enviarEmail(String emailAluno, String mensagem) {
		Date dtemail = mUsuarioLogado.getDataUltimoEmailEnviado();
		if (dtemail == null) {
			Calendar c = Calendar.getInstance(TimeZone.getDefault());
			c.add(Calendar.MINUTE, -1);
			dtemail = c.getTime();
		}
		
		if (new Date().after(dtemail)) {
			try {
				mensagem = "<b>Aluno: </b> "+ mUsuarioLogado.getAluno().getAluno().getNome() + " <br />"					
						+ "<b>Matrícula: </b> "+mUsuarioLogado.getAluno().getMatricula()+"<br />" 
						+ "<b>E-mail: </b> "+ emailAluno + " <br /><br />"
						+ "<b>Mensagem: </b> "+ mensagem +"<br /> "; 
						
				AOEmail.enviarHtmlEmail("lucas.sales@urca.br", "Ouvidoria Aluno Online - URCA", mensagem);
				Calendar horaEnviada = Calendar.getInstance(TimeZone.getDefault());
				horaEnviada.add(Calendar.MINUTE, 5);
				mUsuarioLogado.setDataUltimoEmailEnviado(horaEnviada.getTime());
				this.result.include("msgenvio", "Enviado com sucesso! Obrigado por nos informar.")
						.redirectTo(this).index();
			} catch (EmailException e) {
				e.printStackTrace();
			}
		} else {
			this.result
					.include(
							"msgerro",
							"Desculpe mas por questões de segurança e desempenho, só é permitido enviar um e-mail a cada 5 minutos. Agradecemos a compreensão!")
					.redirectTo(this).index();
		}
	}
	
		

}
